package sk.uniba.fmph.asdf.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Formatter;

/**
 * Trieda obsahuje hasovacie funkcie pre vyuzitie v bezpecnom ukladani hesla.
 *
 * @author Ivor Uhliarik
 */
public class Hash {

	/**
	 * Vypocita SHA-1 has zo znakoveho retazca.
	 *
	 * @param string
	 *            Retazec, ktory sa ma zahasovat.
	 * @return Has retazca s pouzitim algoritmu SHA-1.
	 */
	public static String sha1(final String string) {
		MessageDigest md;
		try {
			md = MessageDigest.getInstance("SHA-1");
			return byteArrayToHexString(md.digest(string.getBytes()));
		} catch (NoSuchAlgorithmException e) {
			return null;
		}
	}

	/**
	 * Skonvertuje pole bajtov do retazca so zakladom 16.
	 *
	 * @param hash
	 *            Pole bajtov, ktore sa ma skonvertovat.
	 * @return Znakovy retazec, ktory vznikol z konverzie.
	 */
	private static String byteArrayToHexString(final byte[] hash) {
		Formatter formatter = new Formatter();
		for (byte b : hash) {
			formatter.format("%02x", b);
		}
		String formattedString = formatter.toString();
		formatter.close();
		return formattedString;
	}
}
